home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Tech Arsenal 1
/
Tech Arsenal (Arsenal Computer).ISO
/
tek-20
/
caty16.zip
/
CATYNUM.PAS
< prev
next >
Wrap
Pascal/Delphi Source File
|
1993-02-02
|
12KB
|
335 lines
UNIT CATYNUM; (* Large numeral routines - D. J. Wilke 07/20/91 *)
(* Generates 7X5 large numeral set for frequency displays *)
INTERFACE
USES CRT, DOS, CATYGLO;
PROCEDURE BuildDigit (Digit : STRING; XNum,YNum : INTEGER);
PROCEDURE NumeralPos (XNum,YNum : INTEGER; BigFreq : STRING);
PROCEDURE NumeralOne (XNum,YNum : INTEGER);
PROCEDURE NumeralTwo (XNum,YNum : INTEGER);
PROCEDURE NumeralThree (XNum,YNum : INTEGER);
PROCEDURE NumeralFour (XNum,YNum : INTEGER);
PROCEDURE NumeralFive (XNum,YNum : INTEGER);
PROCEDURE NumeralSix (XNum,YNum : INTEGER);
PROCEDURE NumeralSeven (XNum,YNum : INTEGER);
PROCEDURE NumeralEight (XNum,YNum : INTEGER);
PROCEDURE NumeralNine (XNum,YNum : INTEGER);
PROCEDURE NumeralZero (XNum,YNum : INTEGER);
PROCEDURE MhzSep (XNum,YNum,Den : INTEGER);
PROCEDURE BigNumerals (XNum,YNum : INTEGER);
IMPLEMENTATION
(*═══════════════════════════════════════════════════════════════════════*)
PROCEDURE BuildDigit (Digit : STRING; XNum,YNum : INTEGER);
VAR
DigitID,Result : INTEGER;
BEGIN
VAL(Digit,DigitID,Result);
CASE DigitID OF
1 : NumeralOne(XNum,YNum);
2 : NumeralTwo(XNum,YNum);
3 : NumeralThree(XNum,YNum);
4 : NumeralFour(XNum,YNum);
5 : NumeralFive(XNum,YNum);
6 : NumeralSix(XNum,YNum);
7 : NumeralSeven(XNum,YNum);
8 : NumeralEight(XNum,YNum);
9 : NumeralNine(XNum,YNum);
0 : NumeralZero(XNum,YNum);
END; (* CASE DigitID OF *)
END; (* BuildDigit *)
(*═══════════════════════════════════════════════════════════════════════*)
PROCEDURE NumeralPos (XNum,YNum : INTEGER; BigFreq : STRING);
VAR
Digit : STRING;
BEGIN
FOR Index := 1 to LENGTH(BigFreq) DO BEGIN
Digit := COPY(BigFreq,Index,1);
IF Digit <> ' ' THEN BEGIN
CASE Index OF
1 : BEGIN
XNum := 2;
BuildDigit(Digit,XNum,YNum);
END;
2 : BEGIN
XNum := 12;
BuildDigit(Digit,XNum,YNum);
END;
3 : BEGIN
XNum := 21;
BuildDigit(Digit,XNum,YNum);
END;
4 : BEGIN
XNum := 29;
MhzSep(XNum,YNum,1);
END;
5 : BEGIN
XNum := 32;
BuildDigit(Digit,XNum,YNum);
END;
6 : BEGIN
XNum := 41;
BuildDigit(Digit,XNum,YNum);
END;
7 : BEGIN
XNum := 50;
BuildDigit(Digit,XNum,YNum);
XNum := 58;
MhzSep(XNum,YNum,4);
END;
8 : BEGIN
XNum := 61;
BuildDigit(Digit,XNum,YNum);
END;
9 : BEGIN
XNum := 70;
BuildDigit(Digit,XNum,YNum);
END;
END; (* CASE *)
END; (* IF Digit *)
END; (* FOR Index *)
END; (* NumeralPos *)
(*═══════════════════════════════════════════════════════════════════════*)
PROCEDURE NumeralOne(XNum,YNum : INTEGER);
BEGIN
GOTOXY(XNum +2,YNum);
WRITE(CHR(219)+CHR(219)+CHR(219)); (* Top row *)
FOR Ybit := YNum +1 TO YNum +4 DO BEGIN (* Rows 2 thru 5 *)
GOTOXY(XNum +3,Ybit);
WRITE(CHR(219)+CHR(219));
END; (* FOR Index *)
END; (* NumeralOne *)
(*═══════════════════════════════════════════════════════════════════════*)
PROCEDURE NumeralTwo (XNum,YNum : INTEGER);
BEGIN
Ybit := YNum; (* Row 1 *)
FOR Xbit := XNum TO XNum +6 DO BEGIN
GOTOXY(Xbit,Ybit); WRITE(CHR(219));
END; (* FOR Xbit *)
Ybit := Ybit +1; (* Row 2 *)
GOTOXY(XNum +5,Ybit); WRITE(CHR(219)+CHR(219));
Ybit := Ybit +1; (* Row 3 *)
FOR Xbit := XNum TO XNum +6 DO BEGIN
GOTOXY(Xbit,Ybit); WRITE(CHR(219));
END; (* FOR Xbit *)
Ybit := Ybit +1; (* Row 4 *)
GOTOXY(XNum,Ybit); WRITE(CHR(219)+CHR(219));
Ybit := Ybit +1; (* Row 5 *)
FOR Xbit := XNum TO XNum +6 DO BEGIN
GOTOXY(Xbit,Ybit); WRITE(CHR(219));
END; (* FOR Xbit *)
END; (* NumeralTwo *)
(*═══════════════════════════════════════════════════════════════════════*)
PROCEDURE NumeralThree (XNum,YNum : INTEGER);
BEGIN
Ybit := YNum; (* Row 1 *)
FOR Xbit := XNum TO XNum +6 DO BEGIN
GOTOXY(Xbit,Ybit); WRITE(CHR(219));
END; (* FOR Xbit *)
Ybit := Ybit +1; (* Row 2 *)
GOTOXY(XNum +5,Ybit); WRITE(CHR(219)+CHR(219));
Ybit := Ybit +1; (* Row 3 *)
FOR Xbit := XNum +2 TO XNum +6 DO BEGIN
GOTOXY(Xbit,Ybit); WRITE(CHR(219));
END; (* FOR Xbit *)
Ybit := Ybit +1; (* Row 4 *)
GOTOXY(XNum +5,Ybit); WRITE(CHR(219)+CHR(219));
Ybit := Ybit +1; (* Row 5 *)
FOR Xbit := XNum TO XNum +6 DO BEGIN
GOTOXY(Xbit,Ybit); WRITE(CHR(219));
END; (* FOR Xbit *)
END; (* NumeralThree *)
(*═══════════════════════════════════════════════════════════════════════*)
PROCEDURE NumeralFour (XNum,YNum : INTEGER);
BEGIN
Ybit := YNum; (* Row 1 *)
GOTOXY(XNum,Ybit); WRITE(CHR(219)+CHR(219));
GOTOXY(XNum +5,Ybit); WRITE(CHR(219)+CHR(219));
Ybit := Ybit +1; (* Row 2 *)
GOTOXY(XNum,Ybit); WRITE(CHR(219)+CHR(219));
GOTOXY(XNum +5,Ybit); WRITE(CHR(219)+CHR(219));
Ybit := Ybit +1; (* Row 3 *)
FOR Xbit := XNum TO XNum +6 DO BEGIN
GOTOXY(Xbit,Ybit); WRITE(CHR(219));
END; (* FOR Xbit *)
Ybit := Ybit +1; (* Row 4 *)
GOTOXY(XNum +5,Ybit); WRITE(CHR(219)+CHR(219));
Ybit := Ybit +1; (* Row 5 *)
GOTOXY(XNum +5,Ybit); WRITE(CHR(219)+CHR(219));
END; (* NumeralFour *)
(*═══════════════════════════════════════════════════════════════════════*)
PROCEDURE NumeralFive (XNum,YNum : INTEGER);
BEGIN
Ybit := YNum; (* Row 1 *)
FOR Xbit := XNum TO XNum +6 DO BEGIN
GOTOXY(Xbit,Ybit); WRITE(CHR(219));
END; (* FOR Xbit *)
Ybit := Ybit +1; (* Row 2 *)
GOTOXY(XNum,Ybit); WRITE(CHR(219)+CHR(219));
Ybit := Ybit +1; (* Row 3 *)
FOR Xbit := XNum TO XNum +6 DO BEGIN
GOTOXY(Xbit,Ybit); WRITE(CHR(219));
END; (* FOR Xbit *)
Ybit := Ybit +1; (* Row 4 *)
GOTOXY(XNum +5,Ybit); WRITE(CHR(219)+CHR(219));
Ybit := Ybit +1; (* Row 5 *)
FOR Xbit := XNum TO XNum +6 DO BEGIN
GOTOXY(Xbit,Ybit); WRITE(CHR(219));
END; (* FOR Xbit *)
END; (* NumeralFive *)
(*═══════════════════════════════════════════════════════════════════════*)
PROCEDURE NumeralSix (XNum,YNum : INTEGER);
BEGIN
Ybit := YNum; (* Row 1 *)
FOR Xbit := XNum TO XNum +6 DO BEGIN
GOTOXY(Xbit,Ybit); WRITE(CHR(219));
END; (* FOR Xbit *)
Ybit := Ybit +1; (* Row 2 *)
GOTOXY(XNum,Ybit); WRITE(CHR(219)+CHR(219));
Ybit := Ybit +1; (* Row 3 *)
FOR Xbit := XNum TO XNum +6 DO BEGIN
GOTOXY(Xbit,Ybit); WRITE(CHR(219));
END; (* FOR Xbit *)
Ybit := Ybit +1; (* Row 4 *)
GOTOXY(XNum,Ybit); WRITE(CHR(219)+CHR(219));
GOTOXY(XNum +5,Ybit); WRITE(CHR(219)+CHR(219));
Ybit := Ybit +1; (* Row 5 *)
FOR Xbit := XNum TO XNum +6 DO BEGIN
GOTOXY(Xbit,Ybit); WRITE(CHR(219));
END; (* FOR Xbit *)
END; (* NumeralSix *)
(*═══════════════════════════════════════════════════════════════════════*)
PROCEDURE NumeralSeven (XNum,YNum : INTEGER);
BEGIN
Ybit := YNum; (* Row 1 *)
FOR Xbit := XNum TO XNum +6 DO BEGIN
GOTOXY(Xbit,Ybit); WRITE(CHR(219));
END; (* FOR Xbit *)
FOR Ybit := YNum +1 TO YNum +4 DO BEGIN; (* Rows 2 thru 5 *)
GOTOXY(XNum +5,Ybit); WRITE(CHR(219)+CHR(219));
END (* FOR Ybit *)
END; (* NumeralSeven *)
(*═══════════════════════════════════════════════════════════════════════*)
PROCEDURE NumeralEight (XNum,YNum : INTEGER);
BEGIN
Ybit := YNum; (* Row 1 *)
FOR Xbit := XNum TO XNum +6 DO BEGIN
GOTOXY(Xbit,Ybit); WRITE(CHR(219));
END; (* FOR Xbit *)
Ybit := Ybit +1; (* Row 2 *)
GOTOXY(XNum,Ybit); WRITE(CHR(219)+CHR(219));
GOTOXY(XNum +5,Ybit); WRITE(CHR(219)+CHR(219));
Ybit := Ybit +1; (* Row 3 *)
FOR Xbit := XNum TO XNum +6 DO BEGIN
GOTOXY(Xbit,Ybit); WRITE(CHR(219));
END; (* FOR Xbit *)
Ybit := Ybit +1; (* Row 4 *)
GOTOXY(XNum,Ybit); WRITE(CHR(219)+CHR(219));
GOTOXY(XNum +5,Ybit); WRITE(CHR(219)+CHR(219));
Ybit := Ybit +1; (* Row 5 *)
FOR Xbit := XNum TO XNum +6 DO BEGIN
GOTOXY(Xbit,Ybit); WRITE(CHR(219));
END; (* FOR Xbit *)
END; (* NumeralEight *)
(*═══════════════════════════════════════════════════════════════════════*)
PROCEDURE NumeralNine (XNum,YNum : INTEGER);
BEGIN
Ybit := YNum; (* Row 1 *)
FOR Xbit := XNum TO XNum +6 DO BEGIN
GOTOXY(Xbit,Ybit); WRITE(CHR(219));
END; (* FOR Xbit *)
Ybit := Ybit +1; (* Row 2 *)
GOTOXY(XNum,Ybit); WRITE(CHR(219)+CHR(219));
GOTOXY(XNum +5,Ybit); WRITE(CHR(219)+CHR(219));
Ybit := Ybit +1; (* Row 3 *)
FOR Xbit := XNum TO XNum +6 DO BEGIN
GOTOXY(Xbit,Ybit); WRITE(CHR(219));
END; (* FOR Xbit *)
Ybit := Ybit +1; (* Row 4 *)
GOTOXY(XNum +5,Ybit); WRITE(CHR(219)+CHR(219));
Ybit := Ybit +1; (* Row 5 *)
FOR Xbit := XNum TO XNum +6 DO BEGIN
GOTOXY(Xbit,Ybit); WRITE(CHR(219));
END; (* FOR Xbit *)
END; (* NumeralNine *)
(*═══════════════════════════════════════════════════════════════════════*)
PROCEDURE NumeralZero (XNum,YNum : INTEGER);
BEGIN
Ybit := YNum; (* Row 1 *)
FOR Xbit := XNum TO XNum +6 DO BEGIN
GOTOXY(Xbit,Ybit); WRITE(CHR(219));
END; (* FOR Xbit *)
Ybit := Ybit +1; (* Row 2 *)
GOTOXY(XNum,Ybit); WRITE(CHR(219)+CHR(219));
GOTOXY(XNum +5,Ybit); WRITE(CHR(219)+CHR(219));
Ybit := Ybit +1; (* Row 3 *)
GOTOXY(XNum,Ybit); WRITE(CHR(219)+CHR(219));
GOTOXY(XNum +5,Ybit); WRITE(CHR(219)+CHR(219));
Ybit := Ybit +1; (* Row 4 *)
GOTOXY(XNum,Ybit); WRITE(CHR(219)+CHR(219));
GOTOXY(XNum +5,Ybit); WRITE(CHR(219)+CHR(219));
Ybit := Ybit +1; (* Row 5 *)
FOR Xbit := XNum TO XNum +6 DO BEGIN
GOTOXY(Xbit,Ybit); WRITE(CHR(219));
END; (* FOR Xbit *)
END; (* NumeralZero *)
(*═══════════════════════════════════════════════════════════════════════*)
PROCEDURE MhzSep (XNum,YNum,Den : INTEGER);
BEGIN
Ybit := YNum +4; (* Row 5 *)
Xbit := XNum;
GOTOXY(Xbit,Ybit);
IF Den = 1 THEN
WRITE(CHR(219)+CHR(219));
IF Den = 2 THEN
WRITE(CHR(178)+CHR(178));
IF Den = 3 THEN
WRITE(CHR(177)+CHR(177));
IF Den = 4 THEN
WRITE(CHR(176)+CHR(176));
END; (* NumeralZero *)
(*═══════════════════════════════════════════════════════════════════════*)
PROCEDURE BigNumerals (XNum,YNum : INTEGER);
VAR
BigFreq : STRING;
BEGIN
STR((SelFreq /100000):9:5,BigFreq);
TEXTCOLOR(SFG); TEXTBACKGROUND(DBG); (* Big numeral colors *)
NumeralPos(XNum,YNum,BigFreq);
TEXTCOLOR(DFG); TEXTBACKGROUND(DBG); (* Default screen colors *)
END; (* BigNumerals *)
END. (* of UNIT CATYNUM *)